Traditional systems management is largely ad-hoc. Application developers do not have a structured framework for managing their applications and achieving high reliability. Developers normally have to write and maintain two separate pieces of code—one for normal application processing and a second one to expose it to management. For example, in one conventional architecture, management is part of the specification and a component cannot be compiled without exposing some management properties.
What is needed is an improved architecture for exposing an application to facilitate system management.